#pragma once

#include "StlStringAndStreams.h"

class MenuManager;
class ServiceProvider;

class Menu
{
public:
	Menu(MenuManager* const i_menuManager);
	virtual ~Menu();

	virtual bool Input(const STL::string& i_input) = 0;
	virtual void Draw() const = 0;
	virtual void OnEnter() {}
	virtual void OnExit() {}

protected:
	ServiceProvider* GetSP() const;
	MenuManager* GetMM() const;

private:
	Menu(const Menu&);	
	Menu& operator=(const Menu&);

	MenuManager* m_menuManager;
};

inline MenuManager* Menu::GetMM() const
{
	return m_menuManager;
}
